// 音乐配置页面
// 导入formatTime工具函数
const { formatTime } = require('../../utils/util');
// 将Component改为Page，这样才能使用onLoad生命周期获取页面参数
Page({
  data: {
    tagId: '',
    tagName: '',
    musicUrl: '',
    recommendedMusic: [
      {
        id: '1',
        name: '欢快进行曲',
        url: 'https://example.com/music/happy_march.mp3'
      },
      {
        id: '2',
        name:'无羁',
        url: 'http://music.163.com/song/media/outer/url?id=1962556941.mp3'
      },
      {
        id: '3',
        name: '动感节奏',
        url: 'https://example.com/music/dynamic_beat.mp3'
      },
      {
        id: '4',
        name: '温馨旋律',
        url: 'https://example.com/music/warm_melody.mp3'
      }
    ],
    isLoading: false,
    previewMusicUrl: '',
    isPlaying: false
  },

  // 页面加载时执行，正确获取页面参数
  onLoad(options) {
    console.log('=== 音乐配置页面 - onLoad生命周期 ===')
    console.log('获取到的页面参数:', options)
    console.log('options.tagId:', options.tagId)
    console.log('options.tagId类型:', typeof options.tagId)
    console.log('options.tagName:', options.tagName)
    
    if (options.tagId) {
      console.log('检测到tagId，设置标签数据')
      this.setData({
        tagId: options.tagId,
        tagName: options.tagName || '未命名徽章'
      })
      console.log('设置后的数据:', {
        tagId: this.data.tagId,
        tagName: this.data.tagName
      })
      this.loadTagData()
    } else {
      console.log('未检测到tagId参数')
    }
  },

  // 加载标签数据
  loadTagData() {
    console.log('=== 加载标签数据调试 ===')
    const app = getApp()
    
    // 打印全局数据状态
    console.log('全局数据app.globalData:', app.globalData)
    console.log('全局标签数组:', app.globalData.tags)
    console.log('全局标签数量:', app.globalData.tags ? app.globalData.tags.length : 'undefined')
    console.log('当前页面tagId:', this.data.tagId)
    
    // 尝试查找标签
    const tag = app.globalData.tags ? app.globalData.tags.find(t => t.id === this.data.tagId) : null
    console.log('查找结果tag:', tag)
    
    if (tag) {
      console.log('找到匹配标签，更新页面数据')
      console.log('标签详情:', {
        id: tag.id,
        name: tag.name,
        musicUrl: tag.musicUrl
      })
      this.setData({
        tagName: tag.name,
        musicUrl: tag.musicUrl
      })
    } else {
      console.log('未找到匹配的标签')
    }
  },

    // 输入音乐URL
    onMusicUrlInput(e) {
      this.setData({
        musicUrl: e.detail.value
      })
    },

    // 选择推荐音乐
    selectRecommendedMusic(e) {
      const music = e.currentTarget.dataset.music
      this.setData({
        musicUrl: music.url
      })
      wx.showToast({
        title: `已选择: ${music.name}`,
        icon: 'none'
      })
    },

    // 预览音乐
  previewMusic(e) {
    const url = e.currentTarget.dataset.url || this.data.musicUrl
    
    if (!url) {
      wx.showToast({
        title: '请先输入或选择音乐URL',
        icon: 'none'
      })
      return
    }

    // 如果当前正在播放并且是同一首音乐，则停止播放
    if (this.data.isPlaying && this.data.previewMusicUrl === url) {
      if (this.innerAudioContext) {
        this.innerAudioContext.stop();
        this.innerAudioContext.destroy();
        this.innerAudioContext = null;
      }
      this.setData({
        isPlaying: false
      });
      wx.showToast({
        title: '停止预览',
        icon: 'none'
      });
      return;
    }

    // 停止当前播放的音乐
    if (this.innerAudioContext) {
      this.innerAudioContext.stop();
      this.innerAudioContext.destroy();
      this.innerAudioContext = null;
    }

    // 创建并配置音频上下文
    this.innerAudioContext = wx.createInnerAudioContext();
    this.innerAudioContext.src = url;
    this.innerAudioContext.autoplay = true;
    this.innerAudioContext.loop = false;

    // 监听播放事件
    this.innerAudioContext.onPlay(() => {
      console.log('音乐播放开始');
      this.setData({
        isPlaying: true,
        previewMusicUrl: url
      });
      wx.showToast({
        title: '开始预览音乐',
        icon: 'none'
      });
    });

    // 监听播放结束事件
    this.innerAudioContext.onEnded(() => {
      console.log('音乐播放结束');
      this.setData({
        isPlaying: false
      });
      // 清理资源
      if (this.innerAudioContext) {
        this.innerAudioContext.destroy();
        this.innerAudioContext = null;
      }
    });

    // 监听错误事件
    this.innerAudioContext.onError((res) => {
      console.error('音乐播放错误:', res);
      wx.showToast({
        title: '音乐播放失败: ' + res.errMsg,
        icon: 'none',
        duration: 2000
      });
      this.setData({
        isPlaying: false
      });
      // 清理资源
      if (this.innerAudioContext) {
        this.innerAudioContext.destroy();
        this.innerAudioContext = null;
      }
    });

    // 监听停止事件
    this.innerAudioContext.onStop(() => {
      console.log('音乐播放停止');
      this.setData({
        isPlaying: false
      });
    });
  },

    // 保存音乐配置
    saveMusicConfig() {
      const { tagId, tagName, musicUrl } = this.data
      const app = getApp()

      if (!musicUrl.trim()) {
        wx.showToast({
          title: '请输入或选择音乐URL',
          icon: 'none'
        })
        return
      }

      // 验证URL格式
      if (!this.isValidUrl(musicUrl)) {
        wx.showToast({
          title: '请输入有效的音乐URL',
          icon: 'none'
        })
        return
      }

      this.setData({
        isLoading: true
      })

      // 模拟保存到服务器
      // 实际项目中应该调用真实的后端接口
      setTimeout(() => {
        // 更新标签信息
        const updatedTag = {
          id: tagId,
          name: tagName,
          musicUrl: musicUrl.trim(),
          bindTime: formatTime(new Date())
        }

        // 保存到全局数据
        app.saveUserTag(updatedTag)

        wx.showToast({
          title: '音乐配置保存成功',
          icon: 'success'
        })

        this.setData({
          isLoading: false
        })

        // 延迟跳转
        setTimeout(() => {
          wx.navigateTo({
            url: '/pages/my-tags/my-tags'
          })
        }, 1500)
      }, 1000)
    },

    // 验证URL格式
    isValidUrl(url) {
      try {
        // 首先尝试标准的URL解析
        new URL(url);
        return true;
      } catch {
        // 如果标准解析失败，检查是否是网易云音乐外链格式
        const neteasePattern = /^http:\/\/music\.163\.com\/song\/media\/outer\/url\?id=\d+\.mp3$/;
        if (neteasePattern.test(url)) {
          return true;
        }
        return false;
      }
    },

    // 返回我的标签页面
    goToMyTags() {
      wx.navigateTo({
        url: '/pages/my-tags/my-tags'
      })
    },

    // 返回上一页
    goBack() {
      wx.navigateBack()
    }
})